/*

This file is part of roomyak.

Copyright (C) 2008 Pixecur Technologies Incorporated (Esotera).
Visit Esotera at http://www.esoteras3.com
 
roomyak is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
 
roomyak is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with roomyak; see the file COPYING.  If not, write to 
Pixecur Technologies, 213-31 Peet Street, St. John's, NL, A1B 3W8. 
 
Linking this library statically or dynamically with other modules is
making a combined work based on this library.  Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
 
*/

package com.datasentinel.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.logging.Logger;

public class VersionInfo
{
	private Properties versionData = new Properties();
	private static Logger logger = Logger.getLogger(VersionInfo.class.getName());

	public VersionInfo(String properties)
	{
		try
		{
			InputStream versionInfo = VersionInfo.class.getResourceAsStream(properties);
			if (null != versionInfo)
				versionData.load(versionInfo);
			else
				throw new IOException();
		}
		catch (IOException ioe)
		{
			logger.warning("no version information available");
		}
	}

	public String getBuildNumber()
	{
		return versionData.getProperty("build.number", "UNKNOWN");
	}

	public String getSCMRevision()
	{
		return versionData.getProperty("scm.revision", "UNKNOWN");
	}
	
	public String getSCMLocation()
	{
		return versionData.getProperty("scm.location", "UNKNOWN");
	}

	public String getProductVersion()
	{
		return versionData.getProperty("version", "UNKNOWN");
	}

	public String getBuildDate()
	{
		return versionData.getProperty("build.date", "UNKNOWN");
	}

	public String getVersionInformation()
	{
		return versionData.isEmpty()?"No build information available":String.format(
				"Version %s [rev %s build %s, %s] from %s", getProductVersion(),
				getSCMRevision(), getBuildNumber(), getBuildDate(),getSCMLocation());
	}
}
